Field of the Invention
The present invention relates to the field of programmatically defining a user interface in a computing environment and more particularly to defining ISPF panels for a terminal interface to a computing environment.
Description of the Related Art
The user interface provides the principal mode through which an end user interacts with a computing environment such as an operating system or application hosted by an operating system. The rudimentary user interface is a statically defined element established at design time of a computing application. Advanced forms of the user interface permit end user customization of the user interface at run time. Even more advanced forms of the user interface provide for a programming language accessible by the end user to define a user interface in a highly customizable way. Generally, the programming language provided for defining a user interface includes a discrete set of directives (commands) which when invoked in a particular arrangement result in a specific desired visualization of a user interface.
In the mini-computing and mainframe computing environments, the production and presentation of a user interface can be somewhat more limiting than that of the personal computing environment. In this regard, in the mini-computing and mainframe computing environments, many applications including the operating system itself are restricted to a textual user interface with limited if any access to graphical user interface (GUI) style elements. Thus, providing the ability of the end user to define a customizable form of a textual user interface can be critical to producing a marketable and human factors friendly interface to an underlying application.
In the mainframe environment, the Interactive System Productivity Facility (ISPF) technology enables the basic customization of a user interface for an application hosted by a mainframe operating system. ISPF includes a screen editor and primarily provides a “3270” terminal interface with a set of panels. A “panel” is a character-based full-screen “window” and each panel can include menus and dialogs to run tools on the underlying time sharing environment of the mainframe operating system. ISPF panels are made up of a number of sections. At the most basic level, these sections are either panel definition sections that define the format of the panel and the static content of the panel, or these sections are processing sections that define what actions are to be taken at times such as when a corresponding panel is initially displayed on the terminal or when the user enters data on the panel. Generally, these panels just provide a convenient interface to perform tasks such as executing modules of mainframe utility programs to do the actual work desired.
ISPF is frequently used to manipulate z/OS® (z/OS is a registered trademark of International Business Machines Corporation of Armonk, N.Y.) operating system data sets via the program development facility (PDF) of ISPF. Of note, ISPF is user-extensible and it is often used as an application program interface (API) by end users seeking to customize the user interface of a corresponding application executing in the mainframe environment. Underlying ISPF/PDF is an extensive set of tools that allow application developers to create panel-driven applications. As such, ISPF/PDF has been widely used by mainframe software vendors to create applications, resulting in many mainframe tools that are similar in appearance and function to ISPF.
The dialog manager (DM) component of ISPF provides application developers with services needed to develop interactive applications. These services include services to prompt an application user to enter data by displaying information on a terminal, read the data into a work area, verify and process the data, store data entered by the user, display information requested by the user, and provide interactive messages, help displays, and tutorials. ISPF provides a programming language for defining the content and format of panels using panel definition statements. As with most programming languages, the ISPF panel language is static and does not provide for extension by the addition of new statements. Consequently, application developers cannot use functionality in defining panels beyond what is provided by ISPF.
As an example, the panel language provided with ISPF does not provide any means for conditionally including or excluding panel definition statements dependent upon some testable condition. This limitation, solved in many programming languages by the use of one or more preprocessor statements, restricts the flexibility of panels, and often forces the programmer to create multiple versions of a panel to display different content or different format depending upon testable conditions. Two major drawbacks result. First, there are multiple versions of panel definitions that must be maintained. Second, the application program that displays the panel must contain program code to determine which version of the panel needs to be displayed.
An alternative approach capitalizes upon a panel facility provided with ISPF referred to a “dynamic formatting”. In dynamic formatting, the format and content of the panel can be dynamically managed by the application program displaying the panel. Still, dynamic formatting can be complex and requires substantial program code to format the panel and process data entered by the user. Further, dynamic formatting does not permit the use of many other panel definition statements provide by ISPF. While ISPF also provides a facility for imbedding or invoking external code from within panels, such as embedded or invoked REXX compliant programs, the embedding or invocation of external code from within a panel can be restricted to use within the processing sections of the panel, and cannot be used to change the format or static content defined in panel definition sections of the panel.